R 编程中的验证集方法

您所在的位置:网站首页 随机拆分验证 模型 R 编程中的验证集方法

R 编程中的验证集方法

2024-06-12 22:49| 来源: 网络整理| 查看: 265

验证集方法是机器学习中的交叉验证技术。交叉验证技术通常用于判断机器学习模型的性能和准确性。在验证集方法中,将用于构建模型的数据集随机分为两部分,即训练集和验证集(或测试集)。该模型在训练数据集上进行训练,其准确性是通过预测训练期间不存在的那些数据点的目标变量来计算的,这些数据点是验证集。拆分数据、训练模型、测试模型的整个过程是一项复杂的任务。但是 R 语言 包含许多库和内置函数,可以非常轻松高效地执行所有任务。

验证集方法涉及的步骤 将数据集随机拆分成一定的比例(一般首选 70-30 或 80-20 的比例) 在训练数据集上训练模型 将生成的模型应用于验证集 使用模型性能指标通过预测误差计算模型的准确性

本文讨论了将验证集方法实现为分类和回归机器学习模型的交叉验证技术的分步方法。

用于分类机器学习模型

当目标变量是分类变量(如阳性、阴性或糖尿病、非糖尿病等)时,使用这种类型的机器学习模型。模型预测因变量的类别标签。在这里,逻辑回归算法将用于构建分类模型。

第 1 步:加载数据集和其他所需的包

在进行任何探索或操作任务之前,必须包含所有必需的库和包以使用各种内置函数和一个数据集,以便更轻松地执行整个过程。

R实现

# loading required packages   # package to perform data manipulation  # and visualization library(tidyverse)   # package to compute  # cross - validation methods library(caret)   # package Used to split the data  # used during classification into  # train and test subsets library(caTools)   # loading package to  # import desired dataset library(ISLR) 第 2 步:探索数据集

了解数据集的结构和维度非常必要,因为这将有助于构建正确的模型。此外,由于这是一种分类模型,因此必须知道目标变量中存在的不同类别。

R实现

# assigning the complete dataset # Smarket to a variable dataset table(dataset$Direction) Down Up 602 648

根据以上信息,导入的数据集有250行9列。 列的数据类型表示双精度浮点数(dbl 来自 double)。目标变量必须是分类模型中的因子数据类型。由于 Direction 列的数据类型已经是 ,因此无需更改任何内容。

此外,响应变量或目标变量是一个二元分类变量(因为列中的值只有 Down 和 Up),两个类标签的比例约为 1:1 意味着它们是平衡的。如果出现类不平衡的情况,好像类标签的比例是 1:2,我们必须确保两个类别的比例大致相等。为此,有许多技术,例如:

下采样 上采样 使用 SMOTE 和 ROSE 进行混合采样 第 3 步:构建模型并生成验证集

此步骤涉及数据集的随机拆分、开发训练和验证集以及模型的训练。下面是实现。

R实现

# setting seed to generate a   # reproducible random sampling set.seed(100)   # dividing the complete dataset # into 2 parts having ratio of # 70% and 30% spl = sample.split(dataset$Direction, SplitRatio = 0.7)   # selecting that part of dataset # which belongs to the 70% of the # dataset divided in previous step train = subset(dataset, spl == TRUE)   # selecting that part of dataset # which belongs to the 30% of the # dataset divided in previous step test = subset(dataset, spl == FALSE)   # checking number of rows and column # in training and testing dataset print(dim(train)) print(dim(test))   # Building the model    # training the model by assigning Direction column  # as target variable and rest other columns  # as independent variables model_glm = glm(Direction ~ . , family = "binomial",                  data = train, maxit = 100)

输出:

> print(dim(train)) [1] 875 9 > print(dim(test)) [1] 375 9 第四步:预测目标变量

随着模型的训练完成,是时候对看不见的数据进行预测了。这里,目标变量只有 2 个可能的值,因此在 predict() 函数中,最好使用 type = response 以便模型预测目标的概率得分分类变量为 0 或 1。

有一个可选步骤将响应变量转换为 1 和 0 的因子变量,这样如果数据点的概率得分高于某个阈值,则将其视为 1,如果低于该阈值,则将其视为被视为0。这里,概率截止设置为0.5。下面是实现这些步骤的代码

R实现

# predictions on the validation set predictTest = predict(model_glm, newdata = test,                        type = "response")   # assigning the probability cutoff as 0.5 predicted_classes = 0.5,                                        "Up", "Down")) 第五步:评估模型的准确性

判断分类机器学习模型准确性的最佳方法是通过混淆矩阵。该矩阵为我们提供了一个数值,该数值表明通过参考测试数据集中目标变量的实际值,正确和错误地预测了多少数据点。除了混淆矩阵,模型的其他统计细节,如准确率和 kappa 可以使用以下代码计算。

R实现

# generating confusion matrix and # other details from the   # prediction made by the model print(confusionMatrix(predicted_classes, test$Direction))

输出:

Confusion Matrix and Statistics

Reference Prediction Down Up Down 177 5 Up 4 189

Accuracy : 0.976 95% CI : (0.9549, 0.989) No Information Rate : 0.5173 P-Value [Acc > NIR] :



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3